

#ifndef _AbstractGeometry_H_
#define _AbstractGeometry_H_

#include "CoreApi.hpp"
#include "AbstractObject.hpp"

#include <vtkPolyData.h>
#include <TopoDS_Shape.hxx>

namespace NSCore {

	class COREAPI AbstractGeometry : 
		public AbstractObject
	{
	public:
		AbstractGeometry();
		virtual ~AbstractGeometry();
		virtual inline QString className() override { return "AbstractGeometry"; }
	public:
		Sp(vtkPolyData) getPoly();
		void setPoly(Sp(vtkPolyData) poly);
		TopoDS_Shape& getTopo();
		void setTopo(TopoDS_Shape& topo);
		int getId();
		void setId(int id);

	private:
		int m_id{ -1 };
		Sp(vtkPolyData) m_raw{nullptr};
		TopoDS_Shape m_shape;

	};

}

#endif